package Inper;

/**
 * Created by dllo on 18/4/12.
 */

// 定义接口 与定义类一样
// 区别是 class关键字 改为 interface关键字
public interface USB {
    // 接口与类一样,可以写属性,可以写方法
    //但是不同的是,接口中 只能写
    // 常量和 抽象方法

//    由于接口里只能出现常量
//    所以定义 常量时 可以不写 public static final
    public static final String VOLTAGE = "SV"; // 常量大写

    // 接口只能有 public的抽象方法
    // 不能够有普通方法,他不是类,也没有构造方法
    // 所以 方法的public abstract 可以不写
    public abstract String sendData();
    public abstract void receiveDate(String date);
}
/*
接口和抽象类的区别:
1.1 语法角度:
抽象类本质上还是一个类,在使用时,抽象类中可以
存在普通方法和成员变量
儿接口是单独的类型,在使用时 只能存在静态常量和抽象方法
1.2 接口中所有的方法可以不写abstract也是抽象方法
    而抽象类中的抽象方法,必须写abstract关键字
1.3 抽象类必须被继承 才能够使用, 而接口必须被实现才能被使用
    一个类只能继承一个类,但是可以实现多个接口
2. 含义角度
当我们使用抽象类的时候,通常想表达一种"is a"的含义,即当前类
和被继承类之间存在着 概念上的"父子关系";
而是用接口的时候,通常是想表达一种"like a"的含义,即只是确定
当前类具有某种能力(具有某些方法),而没有概念上的"父子关系"
3.使用角度
当一个类有确切的父子关系时,我们使用抽象类,否则使用接口(即使不确定
是否有确切的父子关系,我们会优先考虑接口,毕竟类只能继承一次);
如果一个类中有实体方法,那么我们只能使用抽象类
 */